Toggle navigation
Search
思元的開發筆記
Programming
Unity
LeetCode
Golang
Game Demos
Archive
Blog
About
思元的開發筆記
關於 web service, unity, blogger 等軟體工程筆記
×
Search dev.twsiyuan.com
Github SSH 連線設定,確保 Mac SourceTree 正常運作
前陣子在 Mac 上使用 SourceTree 這套 GUI 工具來管理 Github repositories,但由於帳號因安全性考量改用 2FA (Two-factor authentication) 認證後,原先在 SourceTree 採用 HTTPS 利用帳...
Read More
王思元
11:30 下午
GIT
Senior Unity Developer 面試題目分享
分享前陣子尋找新機會所遇到的 Unity 考題 ,十分有水準與微難度,事後回想並整理成此問題筆記。關於該機會的綜合心得放置在文章頁尾。
Read More
王思元
11:11 下午
Unity
Go Reader Pattern 設計與實作
最近在寫小專案所遇到的設計問題,其中一個目標是從檔案中讀取英文單字 (word),並且將其轉換成英文小寫,因此記錄如何在 Golang 設計此機制,並且不斷改進寫了三個版本,並撰寫額外的測試程式碼 (testing code) 進行驗證。
Read More
王思元
2:29 上午
程式語言
,
Golang
Unity 遊戲存檔機制淺談,加密 (Encryption) 保護遊戲存檔防作弊
延續在 前一篇文章 中的議題。 前題,任何的加密機制只是增加破解難度,單機遊戲存檔若沒有特殊硬體的保護,幾乎都可以被破解,光是程式碼反編譯 (decompiling) 並且分析程式碼,便能知道該遊戲如何處理存檔加密,甚至能直接拿到加密用的金鑰 (key)。
Read More
王思元
2:28 下午
軟體工程
,
C-sharp
,
Unity
Unity 遊戲存檔機制淺談,關於壓縮 (Compression) 的三兩事
延續在 前一篇文章 中的議題,在遊戲存檔進行壓縮 (compress) 後儲存,可減少其儲存所需空間,之後讀取先經過解壓縮 (decompress) 後,再反序列化 (deserialize) 還原成遊戲狀態物件來使用。
Read More
王思元
4:00 下午
軟體工程
,
C-sharp
,
Unity
Unity 遊戲存檔機制淺談,從序列化 (Serialization) 到儲存裝置 (Storage)
之前在社團看到的有趣問題,因此綜合以前的開發經驗,整理成這份筆記。
Read More
王思元
10:30 下午
軟體工程
,
C-sharp
,
Unity
Unity rendering order 整理筆記
自從上次 GameJam 體驗在 Unity 中,使用 SpriteRenderer 可直接調整 Sorting layer 來決定 render 順序後,便一直很好奇其背後實作到底是什麼,為什麼改變一個數值便能調整 sprites 在 render 結果的先後順序,而不...
Read More
王思元
3:12 下午
軟體開發
,
Unity
AWS Beanstalk: 日誌 Logs 推送到 CloudWatch 之設定筆記
參考 Reference 章節的 AWS 文件,紀錄如何將部署 在 AWS Beanstalk 的服務所產生的日誌 (logs),設定 CloudWatch Logs agent 來自動推送至 CloudWatch,而不用每次發生問題得自己花時間去撈 logs……。 ...
Read More
王思元
6:15 下午
服務部署
,
AWS
CentOS 7 環境安裝筆記,GUI/gcc/g++/Code::blocks/Go 完整的 Go/Cgo 開發環境
整理之前在 Linux 建立 Go/Cgo 開發環境的安裝筆記。
Read More
王思元
6:30 下午
Linux
HTTP TimeoutHandler 所踩到的雷與解決方式,需要額外判斷 Request.Context() 的狀態
最近遇到在 HTTP 伺服器壓力測試時遇到棘手的問題,從 nginx logs 發現伺服器回應許多 HTTP 503 service unavailable 的錯誤,一路追蹤最終發現是程式碼實作錯誤,記錄其筆記提醒自己不要忘記這個雷。
Read More
王思元
12:30 上午
軟體開發
,
程式語言
,
Golang
Go build 建置時加入時間 (build time) 與版本號 (git commit id)
因應合作廠商需求,希望我們這邊提供網路服務 (web service) 的執行檔 (executable),能透過某些方法知道其版本號或是建置時間等資訊,以協助其 IT 人員部署 (deployment) 時使用。
Read More
王思元
9:18 下午
軟體開發
,
Golang
,
Linux
Go with Cgo 靜態連結 (static linking) 函式庫建置範例與筆記
延續上一篇 Go with Cgo 動態連結 的文章,由於部署 (deployment) 需求的改變,合作廠商 IT 運維技術人員 (Ops) 對於 Linux 的不熟悉,期望部署不需要管理那些動態連結 (dynamic linking) 函式庫,因而開始研究改用靜態連...
Read More
王思元
6:51 下午
程式語言
,
C-plus-plus
,
Golang
Go with Cgo 動態連結 (dynamic linking) 函式庫建置範例與筆記
在 上一篇文章 中,已經知道如何在 Windows 中,利用 gcc/g++ 建置動態連結函式庫 (dynamic-link library),本篇文章筆記如何在 Go (Golang) 中,利用 cgo 來動態連結函式庫,呼叫使用其函式。
Read More
王思元
6:30 下午
程式語言
,
C-plus-plus
,
Golang
在 Windows 環境建置動態連結函式庫 (Dynamic-link library),使用 MinGW gcc/g++ 以及 CodeBlock
整理在 Windows 環境下,編譯 C/C++ 產出動態連結函式庫 (Dynamic-link library) 給其他專案使用的筆記。 大部分的情況下,在 Windows 作業系統中,通常都使用 Microsoft 所推出的 Vistual Studio IDE 來...
Read More
王思元
6:30 下午
軟體開發
,
C-plus-plus
,
Windows
開發 Blog 文字雲工具,統計部落格字詞出現次數
空閒時間開發的小工具,能夠統計部落格 (Blog) 文章字詞數量,然後根據字詞出現頻率,組合畫在一張圖片上的功能。 建議使用桌機電腦 (desktop),以避免繪製文字雲效能的低落 這功能記得從 2017 下半年就想嘗試,然後一直拖拖...
Read More
王思元
5:16 下午
軟體開發
,
Blogger
,
Golang
Heroku with Golang,如何部署第一個 WebApp
Heroku 是一套支援多程式個語言的雲平台即服務 (platform as a service, PaaS),只要將程式碼上傳到該服務中,便可上頭自動編譯執行,建造自己的網路應用程式,且該服務提供免費試用方案 (有限制的),又有支援 SSL (https)。
Read More
王思元
2:48 下午
服務部署
,
Golang
Linux CentOS Network unreachable 處理解決方式
最近在 VMware VMPlayer 的虛擬機器上安裝 CentOS 7,準備進行需 Docker 環境測試與研究,但卻發現沒有網路……跟以前安裝 CentOS 6 情況不同,當時可是直接有網路的,花點時間整理啟用網路的筆記,對 Linux 不熟悉就得花上許多時間研究...
Read More
王思元
2:55 下午
Linux
使用 Lighthouse 來檢查網站設定,為了更好的 SEO 以及瀏覽體驗
從新聞得知有這個工具,GoogleChrome Lighthouse 是一套開源自動化工具,用來協助檢查網站 (Website) 或是網路應用程式 (Web App) 的質量 (quality),從讀取效能 (performance)、網頁親和力 (accessibil...
Read More
王思元
11:26 上午
網站
C# 回傳內部資料集合的幾種方式,考慮封裝與設計需求
Game Jam 活動 上遇到的有趣問題,如何設計回傳資料集合 (data collection) 的函式 (function)?筆記以下幾種方式,範例採用背包類別 (ItemBag class),要將其類別的內部道具資料,暴露給其他類別使用。 附註:System.Co...
Read More
王思元
8:22 下午
程式語言
,
C-sharp
LeetCode #84 Largest Rectangle in Histogram
Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of larges...
Read More
王思元
6:30 下午
題目解題
,
LeetCode
Unity C# 遊戲事件訊息通知機制設計 - Observer pattern
前陣子同事分享去資策會 Design pattern 課程所學,聽到 Observer pattern (觀察者模式) 的介紹,感覺這比較是 C++ 老派的實作方式,不一定適用於 C#,因此在此寫此筆記記錄。
Read More
王思元
8:41 下午
程式語言
,
C-sharp
,
Unity
如何設定 Linux 使用 SSH Key-based 登入驗證方式,使用 PuTTY 登入 Linux 伺服器
最近公司架台內部使用的 Linux 機器,原先是輸入 MIS 所設定的帳號密碼登入,但保管帳號密碼顯得有點難以記憶,因此想到可以使用公開金鑰認證 (Public Key Authentication) 方式,不用輸入密碼而是提供私密金鑰來進行登入。
Read More
王思元
6:14 下午
Linux
AWS Beanstalk: Cannot open shared object file and ldconfig
持續的 Beanstalk 部屬筆記,最近部屬的 Go web application,使用到 cgo 動態連結其他函數庫 (shared library) 的函數,在執行階段發生找不到函數庫的錯誤:
Read More
王思元
6:39 下午
服務部署
,
AWS
,
Linux
AWS Beanstalk: Configuring the proxy server - Keepalive connection with backend app
無意間在檢查應用服務時,所發現的 nginx 設定問題,每次與 nginx 連線要求時,nginx 都會另外開一個連線來處理與後端伺服器 (backend app) 的資料交換。目前專案服務採用 source bundle 方式在 Beanstalk 平台部屬 (dep...
Read More
王思元
6:15 下午
服務部署
,
AWS
,
nginx
AWS Beanstalk: HTTP 502 Upstream sent too big header while reading response header from upstream
最近檢查即將上線的服務,發現主要服務經常發生 HTTP 500 的錯誤,從 logs 中確認是其中某個 REST 微服務回應 HTTP 502 Bad Gateway 所導致的,因而從中翻翻閱該微服務的全部 logs,並找到出錯原因以及解決方法。
Read More
王思元
6:30 下午
服務部署
,
AWS
,
nginx
Unity C# Interface, Inheritance and Component:以狀態血量設計為例
最近同事分享之前受訓所學的 Design patterns,加上看到社群有人詢問血量設計問題,因此整理關於在 Unity 中,設計血量系統的可能實作方法。 不得不說,剛從學校畢業開始接觸 Unity 時,最優先採用的是類別繼承 (class inheritance),...
Read More
王思元
1:16 下午
軟體工程
,
C-sharp
,
Unity
Unity C# Inheritance vs Composition 繼承與組件式設計之戰鬥系統經驗談
基於一些機緣而回憶之前身為初心者所掉過的坑,到底應該是使用繼承 (Inheritance) 抑或是組合 (Composition) 方式來設計遊戲中的戰鬥系統,哪一種比較適合 持續變動的遊戲開發 ?
Read More
王思元
11:15 下午
軟體工程
,
Unity
較新的文章
較舊的文章
粉絲專頁
本週熱門
網誌存檔
贊助廣告
粉絲專頁
每周熱門
Unity rendering order 整理筆記
自從上次 GameJam 體驗在 Unity 中,使用 SpriteRenderer 可直接調整 Sorting layer 來決定 render 順序後,便一直很好奇其背後實作到底是什麼,為什麼改變一個數值便能調整 sprites 在 render 結果的先後順序,而不...
TCP 連線狀態機制與流程
在開發基於 HTTP 的網路應用服務時,當有大量連線要求,或是與長連線 (Persistent connection) 要求時,常常遇到底層 TCP 的連線斷線錯誤,導致服務不穩定。因此研究了解 TCP 的連線狀態機制,並嘗試用自己的方式整理筆記,希望能從基礎知識中找到...
在 Unity 使用 AssetBundles 實作簡易的遊戲資源打包以及更新機制
Unity 官方之前在 Asset Store 上有分享 AssetBundle Manager ,並提供官方教學文章介紹 AssetBundle 載入機制,我們參考該教學以及範例,因應遊戲設計考量,自己使用 Unity 提供的底層 AssetBundle API,製作...
AWS Beanstalk: 日誌 Logs 推送到 CloudWatch 之設定筆記
參考 Reference 章節的 AWS 文件,紀錄如何將部署 在 AWS Beanstalk 的服務所產生的日誌 (logs),設定 CloudWatch Logs agent 來自動推送至 CloudWatch,而不用每次發生問題得自己花時間去撈 logs……。 ...
TortoiseGit 配置 PuTTY Key
每次使用 TortoiseGit 進行專案遠端的 Pull/Push 都需要輸入一次認證,次數多了覺得麻煩懶惰,怎麼沒法記憶認證密碼這一回事?原來只是不會用而已…,以下筆記使用 PuTTY 建立 SSH Key,讓 Git 使用 SSH Key 認證,而不用每次進行遠端操作時,...
Unity 遊戲存檔機制淺談,從序列化 (Serialization) 到儲存裝置 (Storage)
之前在社團看到的有趣問題,因此綜合以前的開發經驗,整理成這份筆記。
Unity 遊戲存檔機制淺談,加密 (Encryption) 保護遊戲存檔防作弊
延續在 前一篇文章 中的議題。 前題,任何的加密機制只是增加破解難度,單機遊戲存檔若沒有特殊硬體的保護,幾乎都可以被破解,光是程式碼反編譯 (decompiling) 並且分析程式碼,便能知道該遊戲如何處理存檔加密,甚至能直接拿到加密用的金鑰 (key)。
Senior Unity Developer 面試題目分享
分享前陣子尋找新機會所遇到的 Unity 考題 ,十分有水準與微難度,事後回想並整理成此問題筆記。關於該機會的綜合心得放置在文章頁尾。
Github SSH 連線設定,確保 Mac SourceTree 正常運作
前陣子在 Mac 上使用 SourceTree 這套 GUI 工具來管理 Github repositories,但由於帳號因安全性考量改用 2FA (Two-factor authentication) 認證後,原先在 SourceTree 採用 HTTPS 利用帳...
CentOS 7 環境安裝筆記,GUI/gcc/g++/Code::blocks/Go 完整的 Go/Cgo 開發環境
整理之前在 Linux 建立 Go/Cgo 開發環境的安裝筆記。
網誌存檔
▼
2018
( 27 )
▼
10月
( 1 )
Github SSH 連線設定,確保 Mac SourceTree 正常運作
►
9月
( 1 )
Senior Unity Developer 面試題目分享
►
8月
( 1 )
Go Reader Pattern 設計與實作
►
6月
( 3 )
Unity 遊戲存檔機制淺談,加密 (Encryption) 保護遊戲存檔防作弊
Unity 遊戲存檔機制淺談,關於壓縮 (Compression) 的三兩事
Unity 遊戲存檔機制淺談,從序列化 (Serialization) 到儲存裝置 (Storage)
►
5月
( 5 )
Unity rendering order 整理筆記
AWS Beanstalk: 日誌 Logs 推送到 CloudWatch 之設定筆記
CentOS 7 環境安裝筆記,GUI/gcc/g++/Code::blocks/Go 完整的 Go...
HTTP TimeoutHandler 所踩到的雷與解決方式,需要額外判斷 Request.Cont...
Go build 建置時加入時間 (build time) 與版本號 (git commit id)
►
4月
( 4 )
Go with Cgo 靜態連結 (static linking) 函式庫建置範例與筆記
Go with Cgo 動態連結 (dynamic linking) 函式庫建置範例與筆記
在 Windows 環境建置動態連結函式庫 (Dynamic-link library),使用 Mi...
開發 Blog 文字雲工具,統計部落格字詞出現次數
►
3月
( 1 )
Heroku with Golang,如何部署第一個 WebApp
►
2月
( 6 )
Linux CentOS Network unreachable 處理解決方式
使用 Lighthouse 來檢查網站設定,為了更好的 SEO 以及瀏覽體驗
C# 回傳內部資料集合的幾種方式,考慮封裝與設計需求
LeetCode #84 Largest Rectangle in Histogram
Unity C# 遊戲事件訊息通知機制設計 - Observer pattern
如何設定 Linux 使用 SSH Key-based 登入驗證方式,使用 PuTTY 登入 Lin...
►
1月
( 5 )
AWS Beanstalk: Cannot open shared object file and ...
AWS Beanstalk: Configuring the proxy server - Keep...
AWS Beanstalk: HTTP 502 Upstream sent too big head...
Unity C# Interface, Inheritance and Component:以狀態血...
Unity C# Inheritance vs Composition 繼承與組件式設計之戰鬥系統經驗談
►
2017
( 59 )
►
12月
( 4 )
►
11月
( 3 )
►
10月
( 6 )
►
9月
( 5 )
►
8月
( 5 )
►
7月
( 5 )
►
6月
( 5 )
►
5月
( 4 )
►
4月
( 5 )
►
3月
( 8 )
►
2月
( 6 )
►
1月
( 3 )
►
2016
( 44 )
►
12月
( 3 )
►
11月
( 2 )
►
10月
( 6 )
►
9月
( 4 )
►
8月
( 5 )
►
7月
( 4 )
►
6月
( 4 )
►
5月
( 2 )
►
4月
( 2 )
►
3月
( 3 )
►
2月
( 6 )
►
1月
( 3 )
►
2015
( 1 )
►
12月
( 1 )
贊助廣告